package com.woniu.platform.service.impl;

import com.woniu.core.entity.CoreEnterprise;
import com.woniu.core.entity.CoreUser;
import com.woniu.core.entity.CoreUserAuth;
import com.woniu.core.entity.vo.CoreEnterpriseVO;
import com.woniu.core.mapper.CoreEnterpriseMapper;
import com.woniu.core.mapper.CoreUserAuthMapper;
import com.woniu.core.mapper.CoreUserMapper;
import com.woniu.platform.service.PlatformCoreUserService;
import com.woniu.util.utils.HttpResult;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

@Service
public class PlatformCoreUserServiceImpl implements PlatformCoreUserService {
    @Autowired
    private CoreEnterpriseMapper coreEnterpriseMapper;
    @Autowired
    private CoreUserMapper coreUserMapper;
    @Autowired
    private CoreUserAuthMapper coreUserAuthMapper;

    /**
     * 录入核心企业
     * 生成超级管理员
     * @param coreEnterprise
     * @return
     */
    @Transactional//事务管理
    @Override
    public HttpResult<?> insertCoreAndUser(CoreEnterprise coreEnterprise) {
        try {
            coreEnterpriseMapper.insert(coreEnterprise);//录入核心企业信息，返回主键至coreEnterprise中
            CoreUser coreUser=new CoreUser();
            coreUser.setUserCoreId(coreEnterprise.getCoreId());
            coreUser.setUserAccount("admin");
            coreUser.setUserPassword("123456");
            coreUserMapper.insert(coreUser);//生成超级管理员
            CoreUserAuth coreUserAuth=new CoreUserAuth();
            coreUserAuth.setUserId(coreUser.getUserId());
            coreUserAuth.setAuthId(1);//注入权限
            coreUserAuthMapper.insert(coreUserAuth);
            return new HttpResult<>().ok(coreUser);
        } catch (Exception e) {
            e.printStackTrace();
            return new HttpResult<>().fail();
        }
    }

    @Override
    public HttpResult<?> selectCore(CoreEnterpriseVO coreEnterpriseVO) {
        try {
            List<CoreEnterprise> coreEnterprises = coreEnterpriseMapper.selectCore(coreEnterpriseVO);
            return new HttpResult<>().ok(coreEnterprises);
        } catch (Exception e) {
            e.printStackTrace();
            return new HttpResult<>().fail();
        }
    }
}
